﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using DataAccessComponents;
using BusinessLogicLayer;

namespace inzDesktop
{
    /// <summary>
    /// Interaction logic for windowSzczegolyPracownika.xaml
    /// </summary>
    public partial class windowSzczegolyPracownika : Window
    {
        public windowSzczegolyPracownika()
        {
            InitializeComponent();
        }

        public void inicjalizujZawartosc(int idpracownik,bool edycjaProfil=false)
        {
            // Ustawnianie obiektu pracownika
            PracownikBL pracownikBL = new PracownikBL();
            Pracownik pracownik = pracownikBL.pobierz(idpracownik);

            this.Title = string.Format("Szczegóły pracownika: {0} {1}", pracownik.Imie, pracownik.Nazwisko);

            if (!string.IsNullOrEmpty(pracownik.Haslo))
            {
                tbHaslo.IsReadOnly = true;
            }

            this.DataContext = pracownik;

            StanowiskoBL staBL = new StanowiskoBL();
            UprawnienieBL uprBL = new UprawnienieBL();
            OddzialBL oddBL = new OddzialBL();
            // Pobieranie rodzajów stanowiska
            cbStanowisko.ItemsSource = staBL.pobierzListe();
            // Pobieranie rodzajów uprawnień
            cbUprawnienia.ItemsSource = uprBL.pobierzListe();
            // Pobieranie oddzial
            cbOddzial.ItemsSource = oddBL.pobierzListe();
            // Uzupełnianie cobobox listą województw
            IList<string> wojewodztwa = new List<String>();
            wojewodztwa.Add("mazowieckie");
            wojewodztwa.Add("podlaskie");
            wojewodztwa.Add("lubelskie");
            wojewodztwa.Add("śląskie");
            wojewodztwa.Add("pomorskie");
            wojewodztwa.Add("zachodnio-pomorskie");
            wojewodztwa.Add("kujawsko-pomorskie");
            wojewodztwa.Add("warmińsko-mazurskie");
            wojewodztwa.Add("lubuskie");
            wojewodztwa.Add("wielkopolskie");
            wojewodztwa.Add("małopolskie");
            wojewodztwa.Add("dolno-śląskie");
            wojewodztwa.Add("opolskie");
            wojewodztwa.Add("podkarpackie");
            wojewodztwa.Add("świętokrzyskie");
            wojewodztwa.Add("łódzkie");
            cbWojewodztwo.ItemsSource = wojewodztwa;

            if (edycjaProfil == true)
            {
                cbStanowisko.IsEnabled = false;
                cbUprawnienia.IsEnabled = false;
                cbUprawnienia.IsEnabled = false;
            }
        }

        private void btnZmienHaslo_Click(object sender, RoutedEventArgs e)
        {
            lblStareHaslo.Visibility = Visibility.Visible;
            lblNoweHaslo.Visibility = Visibility.Visible;
            tbStareHaslo.Visibility = Visibility.Visible;
            tbNoweHaslo.Visibility = Visibility.Visible;
            btnZapisz.Visibility = Visibility.Visible;
        }

        private void btnZapisz_Click(object sender, RoutedEventArgs e)
        {
            Pracownik pracownik = this.DataContext as Pracownik;

            string starehaslo = tbStareHaslo.Password;
            string nowehaslo = tbNoweHaslo.Password;

            if (pracownik.zmienHaslo(starehaslo, nowehaslo) == true)
            {
                MessageBox.Show("Hasło pomyślnie zmienione.","Sukces",MessageBoxButton.OK,MessageBoxImage.Information);
                lblStareHaslo.Visibility = Visibility.Collapsed;
                lblNoweHaslo.Visibility = Visibility.Collapsed;
                tbStareHaslo.Visibility = Visibility.Collapsed;
                tbNoweHaslo.Visibility = Visibility.Collapsed;
                btnZapisz.Visibility = Visibility.Collapsed;
                this.DataContext = pracownik;
                tbHaslo.Text = pracownik.Haslo;
            }
            else
            {
                MessageBox.Show("Błędne stare hasło", "Błąd", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void btbDodajPracownika_Click(object sender, RoutedEventArgs e)
        {
            if (((Pracownik)this.DataContext).Czy_zmiana == true)
            {
                System.Windows.MessageBoxResult wynik = System.Windows.MessageBox.Show("Czy zapisać zmiany?", "Uwaga!", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
                if (wynik == MessageBoxResult.Yes)
                {
                    zapiszZmianyWPracownik();
                    this.Close();
                }
                else if (wynik == MessageBoxResult.No)
                {
                    this.Close();
                }
            }
            else
                this.Close();
        }

        private void zapiszZmianyWPracownik()
        {
            Pracownik pracownik = this.DataContext as Pracownik;
            PracownikBL pracownikBL = new PracownikBL();

            pracownikBL.aktualizuj(pracownik);

        }

        private void btnAnuluj_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
    }
}
